1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.network;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 
35 extern (C):
36 
37 alias _PurpleNetworkListenData PurpleNetworkListenData;
38 alias void function (int, void*) PurpleNetworkListenCallback;
39 
40 struct _PurpleNetworkListenData;
41 
42 
43 version(Derelict_Link_Static)
44 {
45     extern( C ) nothrow 
46     {
47 	    const(ubyte)* purple_network_ip_atoi(const(char)* ip);
48         void purple_network_set_public_ip(const(char)* ip);
49         const(char)* purple_network_get_public_ip();
50         const(char)* purple_network_get_local_system_ip(int fd);
51         GList* purple_network_get_all_local_system_ips();
52         const(char)* purple_network_get_my_ip(int fd);
53         void purple_network_listen_map_external(gboolean map_external);
54         PurpleNetworkListenData* purple_network_listen(ushort port, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);
55         PurpleNetworkListenData* purple_network_listen_family(ushort port, int socket_family, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);
56         PurpleNetworkListenData* purple_network_listen_range(ushort start, ushort end, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);
57         PurpleNetworkListenData* purple_network_listen_range_family(ushort start, ushort end, int socket_family, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);
58         void purple_network_listen_cancel(PurpleNetworkListenData* listen_data);
59         ushort purple_network_get_port_from_fd(int fd);
60         gboolean purple_network_is_available();
61         void purple_network_force_online();
62         void* purple_network_get_handle();
63         void purple_network_set_stun_server(const(gchar)* stun_server);
64         const(gchar)* purple_network_get_stun_ip();
65         void purple_network_set_turn_server(const(gchar)* turn_server);
66         const(gchar)* purple_network_get_turn_ip();
67         void purple_network_remove_port_mapping(gint fd);
68         int purple_network_convert_idn_to_ascii(const(gchar)* in_, gchar** out_);
69         void purple_network_init();
70         void purple_network_uninit();
71     }
72 }
73 else
74 {
75     extern( C ) nothrow 
76     {
77 	    alias da_purple_network_ip_atoi = const(ubyte)* function(const(char)* ip);																																
78         alias da_purple_network_set_public_ip = void function(const(char)* ip);																																	
79         alias da_purple_network_get_public_ip = const(char)* function();																																		
80         alias da_purple_network_get_local_system_ip = const(char)* function(int fd);																															
81         alias da_purple_network_get_all_local_system_ips = GList* function();																																	
82         alias da_purple_network_get_my_ip = const(char)* function(int fd);																																		
83         alias da_purple_network_listen_map_external = void function(gboolean map_external);																														
84         alias da_purple_network_listen = PurpleNetworkListenData* function(ushort port, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);														
85         alias da_purple_network_listen_family = PurpleNetworkListenData* function(ushort port, int socket_family, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);							
86         alias da_purple_network_listen_range = PurpleNetworkListenData* function(ushort start, ushort end, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);									
87         alias da_purple_network_listen_range_family = PurpleNetworkListenData* function(ushort start, ushort end, int socket_family, int socket_type, PurpleNetworkListenCallback cb, gpointer cb_data);		
88         alias da_purple_network_listen_cancel = void function(PurpleNetworkListenData* listen_data);																											
89         alias da_purple_network_get_port_from_fd = ushort function(int fd);																																		
90         alias da_purple_network_is_available = gboolean function();																																				
91         alias da_purple_network_force_online = void function();																																					
92         alias da_purple_network_get_handle = void* function();																																					
93         alias da_purple_network_set_stun_server = void function(const(gchar)* stun_server);																														
94         alias da_purple_network_get_stun_ip = const(gchar)* function();																																			
95         alias da_purple_network_set_turn_server = void function(const(gchar)* turn_server);																														
96         alias da_purple_network_get_turn_ip = const(gchar)* function();																																			
97         alias da_purple_network_remove_port_mapping = void function(gint fd);																																	
98         alias da_purple_network_convert_idn_to_ascii = int function(const(gchar)* in_, gchar** out_);																											
99         alias da_purple_network_init = void function();																																							
100         alias da_purple_network_uninit = void function();	
101     }
102 
103     __gshared
104     {
105 	    da_purple_network_ip_atoi purple_network_ip_atoi;
106 	    da_purple_network_set_public_ip purple_network_set_public_ip;
107 	    da_purple_network_get_public_ip purple_network_get_public_ip;
108 	    da_purple_network_get_local_system_ip purple_network_get_local_system_ip;
109 	    da_purple_network_get_all_local_system_ips purple_network_get_all_local_system_ips;
110 	    da_purple_network_get_my_ip purple_network_get_my_ip;
111 	    da_purple_network_listen_map_external purple_network_listen_map_external;
112 	    da_purple_network_listen purple_network_listen;
113 	    da_purple_network_listen_family purple_network_listen_family;
114 	    da_purple_network_listen_range purple_network_listen_range;
115 	    da_purple_network_listen_range_family purple_network_listen_range_family;
116 	    da_purple_network_listen_cancel purple_network_listen_cancel;
117 	    da_purple_network_get_port_from_fd purple_network_get_port_from_fd;
118 	    da_purple_network_is_available purple_network_is_available;
119 	    da_purple_network_force_online purple_network_force_online;
120 	    da_purple_network_get_handle purple_network_get_handle;
121 	    da_purple_network_set_stun_server purple_network_set_stun_server;
122 	    da_purple_network_get_stun_ip purple_network_get_stun_ip;
123 	    da_purple_network_set_turn_server purple_network_set_turn_server;
124 	    da_purple_network_get_turn_ip purple_network_get_turn_ip;
125 	    da_purple_network_remove_port_mapping purple_network_remove_port_mapping;
126 	    da_purple_network_convert_idn_to_ascii purple_network_convert_idn_to_ascii;
127 	    da_purple_network_init purple_network_init;
128 	    da_purple_network_uninit purple_network_uninit;
129     }
130 }